Computer data are organized in various ways to facilitate efficient storage of the data and access to the data by users, application programs, and operating systems. The data are stored in physical storage devices such as disk drives. On each physical storage device, the data are grouped into blocks of bytes. Each physical storage device can be formatted or partitioned into one or more physical volumes. Each physical volume provides a contiguous range of block addresses.
Physical volumes from a group of physical storage devices can be grouped together to form a volume group, and then a logical volume can be created on the volume group. The logical volume provides a contiguous range of logical block addresses, and a particular mapping of the logical block addresses to the physical block addresses of the storage devices. For example, the logical volume can be defined so that the contiguous logical blocks are striped across the group of storage devices. The storage devices may be organized into a Redundant Array of Inexpensive Disks (RAID) so that some of the physical blocks store redundant data or parity blocks for a particular level of RAID redundancy.
Typically a file system is built upon a logical volume so that there is a one-to-one correspondence between the file system and the logical volume. The file system is a hierarchical organization of directories and files, beginning with a root directory of the file system. Users or application programs call file system manager routines of an operating system to access directories and files of the file system, and to create or delete directories and files. For example, a user or application program provides a path name to a directory or file, and the file system manager searches the file system hierarchy for the specified directory or file.
A well-known file system organization is the Unix file system, as described in Chapter 9, pp. 261-289 of Uresh Vahalia, Unix Internals: The New Frontiers, 1996, Prentice Hall, Inc., Simon & Schuster, Upper Valley River, N.J. 07458. The file system is comprised of file system blocks including a respective inode for each directory or file, and direct blocks and indirect blocks for storing additional data of the directories and files.
The Linux operating system is a public-domain operating system using a Unix-based file system. The Linux operating system has a Logical Volume Manager (LVM). As described in Mike Fogarty, “LVM and Removable IDE Drives Backup System,” Linux Journal, linuxjournal.com, Mar. 9, 2004, LVM has been used in the following fashion to create a logical volume and to build a file system upon the logical volume:                1. fdisk /dev/hdb        2. fdisk /dev/hdd        3. pvcreate /dev/hdb1 /dev/hdd1        4. vgcreate -s 16 M a1b1 /dev/hdb1 /dev/hdd1        5. lvcreate -L 226 g a1b1        6. mke2fs -j /dev/a1b1/1vol1        7. mkdir /mnt/back        8. mount /dev/a1b1/1vol1 /mnt/back        
The first two commands invoke a format disk utility “fdisk” to configure the disk drives “hdb” and “hdd” to create a partition “hdb” on the disk drive “hdb” and a partition “hdd1” on the disk drive “hdd”. The third command “pvcreate” creates respective physical volumes from the partitions. The fourth command “vgcreate” creates a volume group called “a1b1” composed of the two physical volumes “/dev/hdb1” and “/dev/hdd1”. The fifth command “lvcreate” creates a logical volume “a1b1”, which uses all of the available storage on the volume group. The sixth command “mke2fs” creates a file system on the logical volume “a1b1”. The seventh command “mkdir” creates a mount point for the file system. The eighth command “mount” is used to mount the logical volume, so that the file system on the logical volume becomes accessible to users and application programs.
By creating a logical volume from storage of a group of disk drives, users and application programs need not be concerned with how data are located on the physical storage devices. There are, however, a number of situations where the user or application program should be aware of limitations imposed by the logical volume and the file system built upon the logical volume. For example, the extent of the logical volume may set a storage limit upon file system expansion, and when a file system expands to the size of its logical volume, users or application programs may experience some delay while the logical volume is extended, for example, by the extension of the physical volumes of the volume group of the logical volume or by the addition of physical storage devices to the volume group of the logical volume. Directories and files may be moved easily within a file system or logical volume, because such movement can be preformed by changing pointers in the hierarchical organization. Users and application programs, however, may experience significant delay when moving directories or files between logical volumes, because such movement has been performed by copying data between physical storage locations. Certain operations, such as creating symbolic links or shortcuts, may be permitted within a logical volume but prohibited between logical volumes. Thus, there is a desire to reduce or eliminate restrictions imposed upon users and applications by the logical volume and the file system built upon the logical volume.